Asynchronous Transfer Mode (ATM) is a very high-speed transmission protocol developed for transferring traffic (i.e., data) in networks. ATM uses data packets, called cells, for transporting and routing traffic through a network. The fixed size of ATM cells make networks that utilize ATM (hereinafter ATM networks) very versatile, supporting the transfer of a wide variety of different types of data, including raw data, voice data, video data, image data, multimedia data, and other types of data.
As data enters an ATM network, it is typically segmented (i.e., formed) into ATM cells by the ATM Adaptation Layer (AAL) present in either an ATM device, such as a switch or router, which are devices that relay and route traffic in the network. The cells travel through the ATM network in a cell stream. As the cells exit the ATM network, they are reassembled (i.e., reformed) into a native data format. ATM networks allocate bandwidth on demand, which is particularly important for traffic that has very little predictability such as telecommunication networks. For instance, when an end system device (i.e., source node) attempts to send data to another end system (i.e., a destination node) in an ATM network, the source node typically requests the establishment of a Virtual Connection (VC), which is referred to as a call. Before the call is accepted a determination is made by the network whether or not to accept the call by examining available network resources.
The objective of the network when establishing a call is to ensure that a requested Quality of Service (QoS) is maintained for a connection between a source node and a destination node (it is noted that while the terms ‘source’ and ‘destination’ denote a traffic flow direction, it is appreciated that ATM connections support bidirectional traffic flow, and accordingly the terms ‘source node’ and ‘destination node’ can be used interchangeably). Providing the desired QoS for various traffic types involves proper traffic management. If the call is accepted, the network forms an agreement with the source node. The agreement typically stipulates that the source node shall not to exceed the specified Peak Cell Rate (PCR) for the call. The amount of bandwidth allocated depends on the connection's specified traffic parameters (a.k.a. descriptors) and the type of QoS, and can vary from the Minimum Cell Rate (MCR) to the (PCR) of the call. Broadly ATM connections can be classified into Real time and Non-real time service categories. Real Time Service categories include Constant Bit Rate (CBR) and Variable Bit Rate Real Time (VBRrt), while Non-real time service categories include Variable Bit Rate Non-Real Time (VBRnrt), Available Bit Rate (ABR) and Unspecified Bit Rate (UBR).
Typical bandwidth allocation for Non-real time services is much less than its specified PCR and close to it's MCR, which allows for accommodating a lot more VC than the actual capacity of the link/node. This is known as oversubscription of a link/node. However, not all VCs may use network resources at the same time, which results in unused bandwidth (i.e. resource). Over-subscription thus allows some VCs now to burst traffic up to their PCR and utilize the statistical fluctuation of each VCs traffic load, and thus save bandwidth. Thus, over-subscription allows the non-real time connections to burst traffic at a rate higher than its assigned bandwidth or cell rate. In other words it is possible for a non-real time connection to burst traffic up to their PCR without suffering discard at their ingress due to Usage Parameter Control (UPC).
However, if all non-real time connections start sending traffic close to their PCR, then this may lead to congestion by overloading some network link/node egress. In such congested situations, connections that are sending traffic (intentionally or unintentionally) more than their Available Cell Rate (ACR) are considered misbehaving. Though it is not mentioned explicitly, it should be appreciated that each non-real time connection needs to be individually tracked and monitored using some form of per-VC queuing architecture in the ATM node, in order to analyze which connection is misbehaving and which is not.
Traffic congestion can prevent traffic from reaching its destination and cause significant degradation to the performance on the network. For example, cells sent by the source node can be dropped during transmission. If the destination node detects errors, such as recognizing the dropped cells, it will request that the source node rebroadcast the transmission. This has a recursive effect as it results in more traffic being sent across the ATM network, creating even more congestion, which can make the congestion problem worse. Eventually, a disruptive phenomenon can propagate across the ATM network, overloading available resources with traffic cells, which are dropped as retransmissions occur. Eventually cells are retransmitted onto the network and may overlap with previous retransmissions, which causes further data backup and more cells to be dropped, yet again. Accordingly, traffic congestion can cause a network to fail if not dealt with through proper traffic management, and in particular proper congestion control.
Attempts have been made to control congestion in ATM networks. Congestion control can be applied at the call level and cell level. At the call level, Connection Admission Control (CAC) is applied to perform access admission control in deciding whether or not accept the call into the network by evaluating the resources required carefully to meet the QoS objective of the call by examining available network resources. Congestion control schemes applied at the cell level can be applied both at the “ingress” of the node and at the egress of each ATM node.
Usage Parameter Control (UPC), or in other words, traffic enforcement or policing, is a set of defined corrective actions (i.e. selective discard of the violating cells or tagging violating cells that could be discarded in downstream nodes if necessary) taken by an ATM network at the ingress of the virtual circuit or virtual path level to protect network resources from malicious as well as unintentional misbehavior, by detecting violations of negotiated traffic contracts, such as sending traffic more than the specified PCR. However, as discussed previously in context of network node oversubscription, a connection may be sending traffic within the connection's PCR and thus may be conforming to the connection's UPC but may still contribute to congestion at some intermediate network node egress. In such situations congestion control is applied at the congested egress.
Open Loop Flow Control is one such approach used to regulate the traffic locally by decreasing (a.k.a. throttling) the outgoing (i.e. egressing) traffic rate of the misbehaving connection by restricting the egressing (i.e. outgoing) traffic for that connection and discarding the excess traffic at the congested node. Though this mechanism is useful in preventing congestion from further percolation in the downstream direction, it lacks the ability to regulate traffic flow at the very source of the connection.
Closed Loop Flow Control addresses the limitation of the Open Loop Flow Control as in this mechanism sources of congestion are informed about the congestive state of the network through feedback and are requested to decrease their input rate. The main advantage of a feedback mechanism is that if a certain node in a network is congested, then the congestion can be moved from the node experiencing traffic congestion (referred to as the “point-of-congestion”) back to the source of the congestion.
Often to relieve a point of congestion in a faster manner, certain congestion control techniques do not discriminate between conforming and non-conforming connections and may force overall reduction in cell transfer rate at the congested node. This penalizes the non-misbehaving connections by forcing them to reduce their overall cell transfer rates, even though they may not be misbehaving.
Other congestion control mechanisms for ATM networks have been developed or proposed to perform congestion control, such as cell buffering techniques, cell disposal policing techniques, artificial intelligence prediction techniques, and various other congestion control techniques. Most, if not all of these congestion mechanisms, either reduce the cell rate of nodes in a call's particular connection path or link to alleviate congestion or perform other procedures that degrade the overall performance of networks and do not consider unutilized resources across the entire network.